1
Introduction aux agents de résolution de problèmes
PolyU COMP5511Cours 2
00:00

De la réflexivité à la planification

Dans l'évolution de la conception des agents, nous passons des Agents Réflexes, qui associent les percepts directement aux actions sur la base de règles simples (par exemple, « Si la voiture devant freine, freiner »), aux Agents de Résolution de Problèmes. Les agents réflexes opèrent dans un contexte immédiat, tandis que les agents de résolution de problèmes sont Basés sur des objectifs. Ils considèrent les conséquences futures de leurs actions pour trouver une séquence qui satisfasse un objectif spécifique.

  • Agent Réflexe : $Action = Fonction(Percept)$
  • Agent de Planification : $Séquence\_d'Actions = Recherche(État, But)$

La Représentation d'État Atomique

À ce niveau fondamental, les agents utilisent une Représentation Atomique. Cela signifie que l'état du monde est traité comme une boîte noire — un nœud singulier sans structure interne visible par l'algorithme de recherche. L'agent raisonne uniquement sur :

  • États ($S$) : Instantanés de l'environnement.
  • Actions ($A$) : Transitions entre les états.
  • Test de But : Une vérification booléenne si l'état $s \in S_{goal}$.

La Boucle de Résolution de Problèmes

Un agent de résolution de problèmes suit un cycle distinct en quatre étapes pour naviguer dans l'environnement :

  1. Formulation du But : Décider quel objectif poursuivre en fonction de la situation actuelle.
  2. Formulation du Problème : Abstraire le monde réel en un modèle mathématique (États et Actions).
  3. Recherche : Simuler des séquences d'actions pour trouver le chemin optimal.
  4. Exécution : Effectuer les actions trouvées pendant la phase de recherche sans autre délibération (en supposant un environnement statique).
Implémentation Python (agent_types.py)
1
class ReflexAgent :
2
defact (self, percept) :
3
# Mappage direct : Règle -> Action
4
return règles.get(percept, default_action)
5
6
class ProblemSolvingAgent :
7
def__init__ (self):
8
self.seq = [] # Séquence d'actions mise en mémoire tampon
9
10
defact (self, percept) :
11
# Si nous sommes en cours d'exécution, continuer
12
ifself.seq :
13
returnself.seq.pop (0()
14
15
# Sinon, Planifier (Rechercher)
16
state = self.update_state(percept)
17
goal = self.formulate_goal(state)
18
problem = self.formulate_problem(state, goal)
19
20
# La recherche renvoie une liste d'actions
21
self.seq = search_algorithm(problem)
22
23
returnself.seq.pop (0()